Response Caching এবং Distributed Caching হলো ওয়েব অ্যাপ্লিকেশন পারফরম্যান্স অপটিমাইজ করার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ কৌশল। এগুলি ডেটার পুনরায় রেন্ডারিং বা পুনরুদ্ধারের সময়কে কমিয়ে অ্যাপ্লিকেশনের গতিবিধি উন্নত করে।
Response Caching হল একটি কৌশল যেখানে সার্ভার একবার একটি রেসপন্স প্রক্রিয়া করার পর, সেই রেসপন্সটি কিছু সময়ের জন্য কনজিউমারদের কাছে কন্ট্রোল করা হয়, যাতে পরবর্তী একই রিকোয়েস্টের জন্য নতুন করে সার্ভারকে কাজ না করতে হয়। এতে সার্ভারের ওপর চাপ কমে এবং ওয়েব অ্যাপ্লিকেশনের পারফরম্যান্স বাড়ে।
ASP.NET Core এ Response Caching চালু করতে নিচের কোডটি ব্যবহার করা যায়।
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseResponseCaching();
}
এছাড়া, কন্ট্রোলার বা অ্যাকশন মেথডে [ResponseCache]
অ্যাট্রিবিউট ব্যবহার করা যায়। যেমন:
[ResponseCache(Duration = 60, Location = ResponseCacheLocation.Client, NoStore = false)]
public IActionResult Get()
{
return View();
}
এখানে Duration
হল ক্যাশিংয়ের সময়কাল (সেকেন্ডে), এবং Location
হল ক্যাশিংটি কোথায় হবে (Client বা Server)।
Distributed Caching হল একটি ক্যাশিং মেকানিজম যা একাধিক সার্ভারে ডেটা শেয়ার করতে সাহায্য করে। অর্থাৎ, একটি নির্দিষ্ট সার্ভারের ক্যাশে থাকা ডেটা অন্য সার্ভারও ব্যবহার করতে পারে। এটি মূলত বড় আকারের ওয়েব অ্যাপ্লিকেশনে ব্যবহৃত হয় যেখানে একাধিক সার্ভার বা সার্ভিস একসাথে কাজ করে এবং ক্যাশ ডেটা একটি একক সার্ভারে সীমাবদ্ধ না থেকে পুরো ক্লাস্টারে বিতরণ করা হয়।
ASP.NET Core এ ডিস্ট্রিবিউটেড ক্যাশ ব্যবহার করতে, প্রথমে সঠিক ক্যাশিং সিস্টেম কনফিগার করতে হয়, যেমন Redis বা SQL Server। এখানে একটি উদাহরণ দেওয়া হলো Redis ব্যবহার করে।
public void ConfigureServices(IServiceCollection services)
{
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379"; // Redis server configuration
options.InstanceName = "SampleApp_";
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/cache", async context =>
{
var cache = context.RequestServices.GetRequiredService<IDistributedCache>();
var value = await cache.GetStringAsync("cachedData");
if (value == null)
{
value = "Hello, World!";
await cache.SetStringAsync("cachedData", value);
}
await context.Response.WriteAsync(value);
});
});
}
এখানে Redis ব্যবহার করা হয়েছে, তবে আপনি অন্য ডিস্ট্রিবিউটেড ক্যাশ সিস্টেম যেমন Memcached বা NCacheও ব্যবহার করতে পারেন।
বৈশিষ্ট্য | Response Caching | Distributed Caching |
---|---|---|
ক্যাশ স্টোরেজ | ক্লায়েন্ট অথবা সার্ভারে ক্যাশ করা হয় | একাধিক সার্ভারে ক্যাশ করা হয় |
স্কেলেবিলিটি | সীমিত (একটি সার্ভারে ক্যাশ করা হয়) | উচ্চ (একাধিক সার্ভারে ক্যাশ করা হয়) |
ব্যবহার | কম ট্রাফিক ওয়েবসাইট, সার্ভার লোড কমানোর জন্য | বড় আকারের অ্যাপ্লিকেশন, একাধিক সার্ভার ব্যবহারের ক্ষেত্রে |
ক্যাশিং ডেটা | ওয়েব পেজের রেসপন্স ডেটা ক্যাশ করা হয় | সেন্ট্রালাইজড ক্যাশে ডেটা শেয়ার করা হয় |
পারফরম্যান্স | দ্রুত, তবে সার্ভারের উপর নির্ভরশীল | স্কেলেবল, দ্রুত এবং ডেটা শেয়ার করা যায় |
Response Caching এবং Distributed Caching দুটোই অ্যাপ্লিকেশন পারফরম্যান্স বাড়ানোর জন্য গুরুত্বপূর্ণ কৌশল। Response Caching সাধারণত ছোট, স্থির অ্যাপ্লিকেশন এবং সার্ভারের লোড কমানোর জন্য ব্যবহৃত হয়, যেখানে Distributed Caching বড়, স্কেলেবল অ্যাপ্লিকেশন এবং একাধিক সার্ভারে ডেটা শেয়ার করার জন্য বেশি উপযুক্ত। যথাযথ ক্যাশিং স্ট্রাটেজি নির্বাচন করলে, ওয়েব অ্যাপ্লিকেশনকে আরও দ্রুত এবং স্কেলেবল করা সম্ভব।
common.read_more